'use strict';
/**
 * 检查手机号是否正确
 * @param
 * @returns {Boolean}
 */
export function checkMobile(mobile) {
    const reg = new RegExp(/(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/);
    return reg.test(mobile);
}
/**
 * 检查邮箱是否正确
 * @param
 * @returns {Boolean}
 */
export function checkEmail(email) {
    const reg = new RegExp(/^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*\.[a-z]{2,}$/);
    return reg.test(email);
}
/**
 * 检查是否为number类型
 * @param
 * @returns {Boolean}
 */
export function checkNumber(number) {
    const regPos = new RegExp(/^\d+(\.\d+)?$/); //非负浮点数
    const regNeg = new RegExp(
        /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/,
    ); //负浮点数
    if (regPos.test(number) || regNeg.test(number)) {
        return true;
    } else {
        return false;
    }
}
/**
 * 检查是否为空
 * @param
 * @returns {Boolean}
 */
export function checkEmpty(string) {
    if (typeof string === 'undefined') {
        return true;
    }
    if (string === null) {
        return true;
    }
    if (string === '') {
        return true;
    }
    return false;
}

/**
 * 检测字符串是否有中文
 * @param
 * @returns {Boolean}
 */
export function containsChinese(value) {
    const reg = new RegExp(/.*[\u4e00-\u9fa5]+.*$/);
    return reg.test(value);
}
/**
 * 检查是否为空
 * @param
 * @returns {String}
 */
export function conversionBytes(bytes) {
    if (bytes === 0) {
        return '0 B';
    }
    const k = 1000,
        sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
        i = Math.floor(Math.log(bytes) / Math.log(k));
    return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
}
/**
 * 以Base64位字符串数据的形式返回一个图片的source
 * @param
 * @returns {String}
 */
export function base64Prefix(data) {
    return `data:image/png;base64,${data}`;
}
/**
 * 阶乘算法
 * @param
 * @returns {Int}
 */
export function factorial(num) {
    if (num < 0) {
        return -1;
    } else if (num === 0 || num === 1) {
        return 1;
    } else {
        return num * factorial(num - 1);
    }
}
/**
 * 转换时分秒
 * @param
 * @returns
 */
export function conversionSeconds(seconds) {
    let arr = [
        parseInt(seconds / 60 / 60),
        parseInt((seconds / 60) % 60),
        parseInt(seconds % 60),
    ];
    return arr.join(':').replace(/\b(\d)\b/g, '0$1');
}

/**
 * 过滤掉false, null, 0, "", undefined, and NaN
 * @param array
 * @returns {Array}}
 */
export function bouncerEmpty(arr) {
    return arr.filter((val) => {
        return !(!val || val === '');
    });
}

/**
 *
 * 冒泡排序
 * @param array
 * @param sortType ascending descending
 * @returns array
 */
export function bubbleSort(array, sortType = 'ascending') {
    if (!(array instanceof Array)) {
        // console.warn('请传入一个数组类型的参数！')
        return array;
    }
    let arrayTemp = array.slice();
    for (let i = 0; i < arrayTemp.length; i++) {
        for (let j = 0; j < arrayTemp.length - i - 1; j++) {
            const element = arrayTemp[j];
            const element1 = arrayTemp[j + 1];
            if (parseInt(element1) < parseInt(element)) {
                arrayTemp[j] = element1;
                arrayTemp[j + 1] = element;
            }
        }
    }
    return sortType === 'ascending' ? arrayTemp : arrayTemp.reverse();
}

/**
 *
 * 日期时间格式化
 * @param new Date()
 * @param sortType ascending descending
 * @returns String
 */
export function formatDateTime(date, fmt) {
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
    }
    let o = {
        'M+': date.getMonth() + 1,
        'd+': date.getDate(),
        'h+': date.getHours(),
        'm+': date.getMinutes(),
        's+': date.getSeconds()
    };
    for (let k in o) {
        if (new RegExp(`(${k})`).test(fmt)) {
            let str = o[k] + '';
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
        }
    }
    return fmt;
};

function padLeftZero(str) {
    return ('00' + str).substr(str.length);
};


/**
 *
 * 权限查询
 * @param new Date()
 * @param sortType ascending descending
 * @returns String
 */

let menuListArr = []
if (!!localStorage.getItem('menuList')) {
    console.log('menuList1');
    menuListArr = localStorage.getItem('menuList').split(',')
}
export function queryMenu(val) {
    // if (!!localStorage.getItem('menuList') && menuListArr.length == 0) {
    //     console.log('menuList2');
        menuListArr = localStorage.getItem('menuList').split(',')
    // }
    if (menuListArr.indexOf(val) == -1) {
        return false
    } else {
        return true
    }
};